package lin.an.food.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import lin.an.food.entity.Food;
import lin.an.food.param.*;
import lin.an.food.vo.FoodDetailsVo;
import lin.an.user.entity.User;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author zhoulinq
 * @date 2025/3/10
 */
public interface FoodService extends IService<Food> {
    void add(FoodAddParam foodAddParam);

    void delete(List<FoodDeleteParam> foodDeleteParamList);

    void edit(FoodEditParam foodEditParam);
    Page<Food> page(FoodPageParam foodPageParam);
    /**
     * MultipartFile文件本地上传，返回文件Url
     *
     **/
    String uploadReturnUrl(MultipartFile file);

    /**
     * 美食推荐
     * @param userId 用户ID
     * @return 推荐的美食列表
     */
    List<Food> recommend(Integer userId);

    /**
     * 美食模糊查询
     */
    List<Food> like(FoodLikeParam foodLikeParam);

    /**
     * 获取美食详情
     */
    FoodDetailsVo detail(FoodDetailParam foodDetailParam);

    /**
     * 获取炒菜美食分类
     */
    Page<Food> chaoCaiPage(FoodPageParam foodPageParam);
    /**
     * 获取炖菜美食分类
     */
    Page<Food> dunCaiPage(FoodPageParam foodPageParam);
    /**
     * 获取烧烤美食分类
     */
    Page<Food> shaoKaoPage(FoodPageParam foodPageParam);

    /**
     * 获取蒸菜美食分类
     */
    Page<Food> zhengCaiPage(FoodPageParam foodPageParam);

    /**
     * 获取主食美食分类
     */
    Page<Food> zhuShiPage(FoodPageParam foodPageParam);

    /**
     * 获取小吃美食分类
     */
    Page<Food> xiaoChiPage(FoodPageParam foodPageParam);

    /**
     * 根据美食id列表获取美食详情信息
     */
    List<Food> favoriteFood(List<Integer> list);

    /**
     * 获取总美食数
     * @return
     */
    Long amount();
}
